Found 10 posts.
Search results Show results as topic list.
Solaris and Karma » Reference nodes from another subnet
- Tomek P
- 10 posts
- Offline
What's the correct way of referencing nodes (for example textures) from another material builder subnetwork? Arnold has Fetch node to do that. I was looking for something similar for Karma to avoid duplicating shader parts.
Solaris and Karma » Creating collections using Python
- Tomek P
- 10 posts
- Offline
Solaris and Karma » Creating collections using Python
- Tomek P
- 10 posts
- Offline
As a workaround I created a Collection operator to generate empty collection and a Python node to populate collection with data. Then I made an HDA from it. Not an ideal solution, but it works fine.
Solaris and Karma » Creating collections using Python
- Tomek P
- 10 posts
- Offline
Hi
I'm trying to create collection using following code:
node = hou.pwd()
stage = node.editableStage()
from pxr import Usd
c = Usd.CollectionAPI(stage.GetPrimAtPath('/collections'), 'dupxo')
inc = c.CreateIncludesRel()
inc.AddTarget('/sphere1')
c.CreateExcludesRel()
c.CreateExpansionRuleAttr(Usd.Tokens.explicitOnly)
c.CreateIncludeRootAttr()
In scene graph, it looks like the collection gets created. But it doesn't appear in primitives field menu. What am I missing in my script?
I'm trying to create collection using following code:
node = hou.pwd()
stage = node.editableStage()
from pxr import Usd
c = Usd.CollectionAPI(stage.GetPrimAtPath('/collections'), 'dupxo')
inc = c.CreateIncludesRel()
inc.AddTarget('/sphere1')
c.CreateExcludesRel()
c.CreateExpansionRuleAttr(Usd.Tokens.explicitOnly)
c.CreateIncludeRootAttr()
In scene graph, it looks like the collection gets created. But it doesn't appear in primitives field menu. What am I missing in my script?
Solaris and Karma » Camera Projections in Karma
- Tomek P
- 10 posts
- Offline
Take a look at this:
https://www.sidefx.com/docs/houdini/nodes/lop/coordsys.html [www.sidefx.com]
There's an example scene at the bottom. I have to admit, it took me a while to understand what's going on.
https://www.sidefx.com/docs/houdini/nodes/lop/coordsys.html [www.sidefx.com]
There's an example scene at the bottom. I have to admit, it took me a while to understand what's going on.
Technical Discussion » Export to Alembic with 'Maya' like locators
- Tomek P
- 10 posts
- Offline
If Alembic is not mandatory, FBX works fine for transferring nulls from Houdini to Nuke. You just have to load it into Axis node, which is not super convenient if you have many locators, but I suppose it could be automated.
Edited by Tomek P - June 9, 2023 16:13:34
Technical Discussion » Python State crashes when changing state to View State
- Tomek P
- 10 posts
- Offline
Technical Discussion » Python State crashes when changing state to View State
- Tomek P
- 10 posts
- Offline
Hi
I have a very simple state. Generally, it's just a preset 'Selection' state with one modification. After accepting selection with Enter key, I'd like to change state to View state. So I've added one line in onStopSelection method. Unfortunately, it crashes Houdini. Here's the code:
How do I change states from within state?
I have a very simple state. Generally, it's just a preset 'Selection' state with one modification. After accepting selection with Enter key, I'd like to change state to View state. So I've added one line in onStopSelection method. Unfortunately, it crashes Houdini. Here's the code:
import hou import viewerstate.utils as su class State(object): def __init__(self, state_name, scene_viewer): self.state_name = state_name self.scene_viewer = scene_viewer def onStopSelection(self, kwargs): """ Called when a bound selector has been terminated """ selector_name = kwargs["name"] self.log(selector_name + " has stopped") self.scene_viewer.enterViewState() # my modification def onSelection(self, kwargs): """ Called when a selector has selected something """ selection = kwargs["selection"] self.log(selection) # Return False to keep the selector active or True to stop it. return False def onStartSelection(self, kwargs): """ Called when a bound selector has been started """ selector_name = kwargs["name"] self.log(selector_name + " has started") def onExit(self,kwargs): """ Called when the state terminates """ state_parms = kwargs["state_parms"] print('onExit') def createViewerStateTemplate(): """ Mandatory entry point to create and return the viewer state template to register. """ state_typename = kwargs["type"].definition().sections()["DefaultState"].contents() state_label = "Tomek::dev::testingstate::1.0" state_cat = hou.sopNodeTypeCategory() template = hou.ViewerStateTemplate(state_typename, state_label, state_cat) template.bindFactory(State) template.bindIcon(kwargs["type"].icon()) # The selector will start when the state enters template.bindGeometrySelector("SOP: Select a primitive", quick_select=True, name="My Primitive Selector") return template
How do I change states from within state?
Technical Discussion » Alembic to USD workflow
- Tomek P
- 10 posts
- Offline
Here's the situation. I received an alembic file with animated car. There's no deformation, only simple translation of geometry. Cars geo weighs about 900mb and whole alembic file with 40 frames of animation is not much more than that. Now, it's time to render the animation.
As far as I know, I need to convert animation to USD. I've imported the alembic using sop_import, set save path and appended usd_rop. Because of memory limitations, I've turned on "flush data after each frame" on usd_rop. And I've ended up with unnecessarily huge file, because flushing data means that all geo gets duplicated every frame. There must be something I'm doing wrong here. I can't imagine dealing with 1000 frames of this kind of animation. What's the correct way of approaching this situation? Can I split alembic into one large geometry file and small animation file?
This is my first week with Karma and second with Houdini in general, so have patience, please.
As far as I know, I need to convert animation to USD. I've imported the alembic using sop_import, set save path and appended usd_rop. Because of memory limitations, I've turned on "flush data after each frame" on usd_rop. And I've ended up with unnecessarily huge file, because flushing data means that all geo gets duplicated every frame. There must be something I'm doing wrong here. I can't imagine dealing with 1000 frames of this kind of animation. What's the correct way of approaching this situation? Can I split alembic into one large geometry file and small animation file?
This is my first week with Karma and second with Houdini in general, so have patience, please.
Technical Discussion » Animated alembic in Solaris/to USD
- Tomek P
- 10 posts
- Offline
You can tick "Flush Data After Each Frame" in USD_ROP to avoid out of memory situation. But you'll end up with huge file anyway.
I'm struggling with similar situation. I have 40 frames of car animation in alembic file. Geo is about 900mb, no deformations. I'd like to get one usd file with geo, and second one with transformations. But all I was able to get is a sequence of 40 usd files, about 900mb for each frame of animation. I stitched them using "usd stitch" node to get one large usd file. It renders fine, but it's far from perfect or even good solution.
There's also "usd stitch clips" node, but I haven't gotten it to work yet.
You can take a look at:
https://www.tokeru.com/cgwiki/index.php?title=HoudiniLops#File_per_frame [www.tokeru.com]
Maybe you'll find something useful.
I'm struggling with similar situation. I have 40 frames of car animation in alembic file. Geo is about 900mb, no deformations. I'd like to get one usd file with geo, and second one with transformations. But all I was able to get is a sequence of 40 usd files, about 900mb for each frame of animation. I stitched them using "usd stitch" node to get one large usd file. It renders fine, but it's far from perfect or even good solution.
There's also "usd stitch clips" node, but I haven't gotten it to work yet.
You can take a look at:
https://www.tokeru.com/cgwiki/index.php?title=HoudiniLops#File_per_frame [www.tokeru.com]
Maybe you'll find something useful.
-
- Quick Links